SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
CREATE PROCedure [dbo].[SP_TCMOVI_BANC_I01]      
/*-------------------------------------------------------*/          
/*---Empresa              : OFISIS S.A.                --*/          
/*---Cliente              : OFISIS                 --*/          
/*---Sistema              : Tesoreria                  --*/          
/*---M÷dulo               : Empresa                    --*/          
/*---Programa             : Grabaci÷n Cabecera         --*/          
/*---                       Movimiento Bancos (Egresos)--*/          
/*---Script               : tcmovi_b.sql               --*/          
/*---Nombre SP            : SP_TCMOVI_BANC_I01         --*/          
/*---Desarrollado por     : Javier Flores A.           --*/          
/*---Fecha Creaci÷n       : 11/06/1999                 --*/          
/*---Base Datos           : Microsoft Sql Server       --*/          
/*---Versi÷n              : 7.0                        --*/          
/*---Invoca a SP          :                            --*/          
/*-------------------------------------------------------*/          
/*-------------------------------------------------------*/          
/*---Modificado 1 por     : LMGP                       --*/          
/*---Fecha Modificaci÷n   : 30/03/2007                 --*/           
/*---Detalle Modificaci÷n : Se comento Update a IM_EGRE--*/          
/*-------------------------------------------------------*/          
/*-------------------------------------------------------*/          
/*---Modificado 2 por     : M.E.C                       --*/          
/*---Fecha Modificaci÷n   : 25/05/2007                 --*/           
/*---Detalle Modificaci÷n : se adiciono @INFA_CAMB_EXTR--*/          
/*-------------------------------------------------------*/     
/*-------------------------------------------------------*/          
/*---Modificado 3 por     : Miguel Carrasco                       --*/          
/*---Fecha Modificaci÷n   : 23/06/2009                 --*/           
/*---Detalle Modificaci÷n : Actividad tipo de operacion solo cabecera--*/       
/*-------------------------------------------------------*/          
/*---Modificado 4 por     : Miguel Carrasco                       --*/          
/*---Fecha Modificaci÷n   : 02/07/2009                 --*/           
/*---Detalle Modificaci÷n : Tipo de Operacion Detraccion--*/          
/*-------------------------------------------------------*/         
/*-------------------------------------------------------*/          
/*---Comentarios                                       --*/          
/*---                                                  --*/          
/*---                                                  --*/          
/*-------------------------------------------------------*/          
          
/*-------------------------------------------------------*/          
/*---Drop Proc SP_TCMOVI_BANC_I01                      --*/          
/*---Grant all on SP_TCMOVI_BANC_I01 to public         --*/           
/*---SP_TCMOVI_BANC_AUXI_I01                                --*/          
/*-------------------------------------------------------*/          
 @ISCO_EMPR   TD_VC_002,    
 @ISCO_USUA_MODI TD_VC_008_USUA,    
 @ISCO_BANC   TD_VC_003,    
 @ISNU_CNTA_BANC TD_VC_020,    
 @ISAA_BNCO   TD_VC_004,    
 @ISMM_BNCO   TD_VC_002,    
 @ISTI_MOVI_BANC TD_VC_001,    
 @ISNU_COMP_BANC TD_VC_008,    
 @IDFE_OPER   TD_DT_001,    
 @ISCO_TIPO_OPER TD_VC_003,    
 @ISCO_SUBR   TD_VC_003,    
 @ISCO_TIPO_DOCU TD_VC_003,    
 @ISNU_DOCU_BANC TD_VC_020,    
 @INFA_TIPO_CAMB TD_NU_015_006,    
 @INFA_CAMB_EXTR TD_NU_015_006,    
 @ISNU_CHEQ   TD_VC_020,    
 @INIM_MOVI   TD_NU_016_004,    
 @IDFE_CHEQ   TD_DT_001,    
 @ISTI_ENTI   TD_VC_001,    
 @ISCO_ENTI   TD_VC_020,    
 @ISDE_NOMB_ORDE TD_VC_100,    
 @ISSI_SOLO_BANC TD_VC_001_SINO,    
 @ISDE_OBSE   TD_VC_100,    
 @ISTI_CORR_INEG TD_VC_001,    
 @ISFR_CORR_INEG TD_VC_001,    
 @INUL_CORR_EGRE TD_IN_001,    
 @INUL_CORR_INEG TD_IN_001,    
 @ISCO_ENTR_REND TD_VC_004,    
 @ISCO_UNID_CNTB TD_VC_003,    
 @ISCO_GRUP_CONC TD_VC_020,    
 @ISNU_SOLI   TD_VC_010,    
 @ISST_SOLI_CHEQ TD_VC_001,    
 @INNU_CHEQ_USAD TD_IN_001,    
 @ISST_ASTO_RESU TD_VC_001,    
 @ISCO_ORDE_SERV TD_VC_020    
    
    
       
As        
Declare          
   @VNCO_NUEV_NUME TD_IN_001,           
   @VSCO_NUEV_CHAR TD_VC_008,          
   @VNNU_REGI      TD_IN_001,          
   @VNUL_CORR_EGRE TD_IN_001,          
   @VNUL_CORR_AJUS TD_IN_001,           
   @VSST_INTE_BACH TD_VC_001,     
   @VSTI_OPNI_CARG TD_VC_003,          
   @VSTI_OPNI_ABON TD_VC_003,          
   @VSTI_DOCU_CHEQ TD_VC_003,          
   @VSTI_NUME_CHEQ TD_VC_003,           
   @VNNU_ULTI_CHEQ TD_IN_001,      
   @VSST_CHEQ_UNID TD_VC_001,    
   @VSST_DETR_CALC TD_VC_001,    
   @VSST_DETA_DOCU TD_VC_001           
          
          
 Exec SP_TTDOCU_CNTB_Q01 29, @VSTI_DOCU_CHEQ OUTPUT          
          
 BEGIN TRAN SP_TCMOVI_BANC_I01          
          
  /** inserta en la cabecera de bancos **/          
          
     Select @VSST_INTE_BACH = ST_INTE_BACH,       
            @VSTI_OPNI_CARG = CO_TIPO_OPEG,       
            @VSTI_OPNI_ABON = CO_TIPO_OPER,      
            @VSST_CHEQ_UNID = ST_CHEQ_UNID      
     From TMPARA_TESO Where CO_EMPR = @ISCO_EMPR          
          
    If Rtrim(@ISCO_ENTR_REND) = ''          
       Select @ISCO_ENTR_REND = NULL          
          
    If Rtrim(@ISNU_CHEQ) = ''          
       Select @ISNU_CHEQ = NULL          
          
    If Rtrim(@ISCO_TIPO_DOCU) = ''          
       Select @ISCO_TIPO_DOCU = NULL          
          
    If Rtrim(@INNU_CHEQ_USAD) = ''          
       Select @INNU_CHEQ_USAD = NULL          
          
    If @VSST_INTE_BACH = 'N' AND @ISST_ASTO_RESU = 'N' AND           
 @ISCO_TIPO_OPER != @VSTI_OPNI_CARG AND @ISCO_TIPO_OPER != @VSTI_OPNI_ABON          
          
        EXEC SP_TTULTI_ASTO_Q01 @ISCO_EMPR, @ISCO_USUA_MODI, @ISCO_UNID_CNTB, @ISCO_TIPO_OPER, @IDFE_OPER, @ISNU_COMP_BANC      
OUTPUT          
          
    Else          
 Begin          
      Select  @VNNU_REGI = Count(*)           
      From TCMOVI_BANC          
      Where CO_EMPR = @ISCO_EMPR           
      And   CO_UNID_CONC = @ISCO_UNID_CNTB      
      And   CO_BANC = @ISCO_BANC           
      And   NU_CNTA_BANC = @ISNU_CNTA_BANC           
      And   AA_BNCO = @ISAA_BNCO          
      And   MM_BNCO = @ISMM_BNCO           
      And   TI_MOVI_BANC = 'E'            
      And   NU_COMP_BANC = @ISNU_COMP_BANC          
          
      Select @VNCO_NUEV_NUME = Convert(Int , @ISNU_COMP_BANC)          
      Select @VNUL_CORR_AJUS = 0            
          
          If @VNNU_REGI > 0 OR RTRIM(ISNULL(@ISNU_COMP_BANC, '')) = ''          
      Begin                   
             Select @VSCO_NUEV_CHAR  = ISNULL(MAX(NU_COMP_BANC), '0')          
             From TCMOVI_BANC           
             Where CO_EMPR = @ISCO_EMPR           
    And   CO_UNID_CONC = @ISCO_UNID_CNTB      
             And   CO_BANC = @ISCO_BANC           
             And   NU_CNTA_BANC = @ISNU_CNTA_BANC           
             And   AA_BNCO = @ISAA_BNCO          
             And   MM_BNCO = @ISMM_BNCO           
             And   TI_MOVI_BANC = 'E'            
             And   NU_COMP_BANC LIKE '000%'          
          
             Select @VNCO_NUEV_NUME = Convert(Int , @VSCO_NUEV_CHAR) + 1          
           
       Select @VSCO_NUEV_CHAR = Convert(Char(8) , @VNCO_NUEV_NUME)          
          
      -- RELLENA DE CEROS HASTA 8 CARACTERES           
        Select @VSCO_NUEV_CHAR = ISNULL(REPLICATE('0',8- DATALENGTH(LTRIM(RTRIM(@VSCO_NUEV_CHAR)))),'')      
+LTRIM(RTRIM(@VSCO_NUEV_CHAR))          
          
             Select @ISNU_COMP_BANC = @VSCO_NUEV_CHAR           
          
       If @VNNU_REGI > 0          
   Select @VNUL_CORR_AJUS = 1           
      End          
          
      SELECT @VNUL_CORR_EGRE = @VNCO_NUEV_NUME           
          
 End          
          
          
 /************ CHEQUES : -- Cheques Manejo de Cheques  -- ************************/          
 Select @VSTI_NUME_CHEQ = IsNull(TI_NUME_CHEQ, 'D')          
 From TMCNTA_BANC          
 Where CO_EMPR = @ISCO_EMPR          
   And CO_BANC = @ISCO_BANC           
   And NU_CNTA_BANC = @ISNU_CNTA_BANC          
          
 If @VSTI_NUME_CHEQ = 'G'          
 Begin           
  IF @ISST_SOLI_CHEQ = 'N'          
  Begin          
   IF @ISNU_CHEQ is Not Null And @INNU_CHEQ_USAD is Null And @ISCO_TIPO_DOCU = @VSTI_DOCU_CHEQ          
   Begin          
    Select @VNNU_ULTI_CHEQ = Max(Convert(Int, NU_ULTI_CHEQ)) + 1          
    From   TTSTOC_CHEQ          
    Where  CO_EMPR = @ISCO_EMPR            
    and    CO_BANC = @ISCO_BANC           
    and   ('S' = @VSST_CHEQ_UNID       
           And CO_UNID_CONC = @ISCO_UNID_CNTB      
           Or 'N' = @VSST_CHEQ_UNID )      
    and    NU_CNTA_BANC = @ISNU_CNTA_BANC           
    and    SI_CHEQ_ACTU = 'S'          
              
    Select @ISNU_CHEQ = Replicate('0', 15 - Len(Convert(Varchar(15), @VNNU_ULTI_CHEQ))) + Convert(Varchar(15),      
@VNNU_ULTI_CHEQ)          
              
    Update TTSTOC_CHEQ          
    Set    NU_ULTI_CHEQ = @ISNU_CHEQ , FE_ULTI_CHEQ = @IDFE_CHEQ,          
FE_USUA_MODI = GETDATE(), CO_USUA_MODI = @ISCO_USUA_MODI          
    Where  CO_EMPR = @ISCO_EMPR            
    and    CO_BANC = @ISCO_BANC           
    and    NU_CNTA_BANC = @ISNU_CNTA_BANC           
    and   ('S' = @VSST_CHEQ_UNID       
           And CO_UNID_CONC = @ISCO_UNID_CNTB      
           Or 'N' = @VSST_CHEQ_UNID )      
    and    SI_CHEQ_ACTU = 'S'          
             
    If @@error <> 0          
    Begin          
     Rollback tran          
     Return          
    End          
   End          
  End          
  Else          
  Begin          
   IF @ISNU_CHEQ is Not Null And @INNU_CHEQ_USAD is Not Null And @ISCO_TIPO_DOCU = @VSTI_DOCU_CHEQ          
   Begin          
    Select @VNNU_ULTI_CHEQ = Max(Convert(Int, NU_ULTI_CHEQ)) + 1          
    From TTSTOC_CHEQ          
    Where  CO_EMPR = @ISCO_EMPR            
    and    CO_BANC = @ISCO_BANC           
    and    NU_CNTA_BANC = @ISNU_CNTA_BANC           
    and   ('S' = @VSST_CHEQ_UNID       
           And CO_UNID_CONC = @ISCO_UNID_CNTB      
           Or 'N' = @VSST_CHEQ_UNID )      
    and    NU_SECU = @INNU_CHEQ_USAD          
              
    Select @ISNU_CHEQ = Replicate('0', 15 - Len(Convert(Varchar(15), @VNNU_ULTI_CHEQ))) + Convert(Varchar(15),      
@VNNU_ULTI_CHEQ)          
              
              
    Update TTSTOC_CHEQ          
    Set    NU_ULTI_CHEQ = @ISNU_CHEQ , FE_ULTI_CHEQ = @IDFE_CHEQ,          
           FE_USUA_MODI = GETDATE(), CO_USUA_MODI = @ISCO_USUA_MODI          
    Where  CO_EMPR = @ISCO_EMPR            
    and    CO_BANC = @ISCO_BANC           
    and    NU_CNTA_BANC = @ISNU_CNTA_BANC           
    and   ('S' = @VSST_CHEQ_UNID       
           And CO_UNID_CONC = @ISCO_UNID_CNTB      
           Or 'N' = @VSST_CHEQ_UNID )      
    and    NU_SECU = @INNU_CHEQ_USAD          
              
    If @@error <> 0          
        
    Begin          
     Rollback tran          
     Return          
    End          
   End          
  End          
 End           
 /************ Fin Cheques Manejo *****************************/       
    
    
---- TIPO DE OPERACION DETRACCION-----------------    
 SELECT  @VSST_DETR_CALC = ST_DETR_CALC ,    
 @VSST_DETA_DOCU = ST_DETA_DOCU       
 FROM TTTIPO_OPER    
 WHERE CO_EMPR = @ISCO_EMPR    
 AND CO_TIPO_OPER = @ISCO_TIPO_OPER    
    
    
    
 IF ISNULL(@VSST_DETA_DOCU,'N') != 'S'    
   SELECT @VSST_DETR_CALC = 'N'    
    
        
          
 Insert Into TCMOVI_BANC(          
 CO_EMPR, CO_BANC, NU_CNTA_BANC, AA_BNCO, MM_BNCO, TI_MOVI_BANC, NU_COMP_BANC,           
 FE_OPER, CO_TIPO_OPER, CO_SUBR, CO_TIPO_DOCU, NU_DOCU_BANC, FA_TIPO_CAMB, FA_CAMB_EXTR, CO_BANC_CHEQ, NU_CHEQ,          
 IM_MOVI, FE_CHEQ,  CO_ENTR_REND, FE_DISP, FE_ENTR_CHEQ, FE_PROG_CHEQ, TI_ENTI, CO_ENTI, DE_NOMB_ORDE,           
 SI_SOLO_BANC, SI_OPER_CONC, AA_CONC, MM_CONC, DE_OBSE, ST_CONT, NU_PROC, TI_SITU,          
 CO_USUA_CREA, FE_USUA_CREA,CO_USUA_MODI, FE_USUA_MODI, CO_UNID_CONC,          
 CO_GRUP_CONC, NU_SOLI, NU_CHEQ_USAD,CO_ORDE_SERV,ST_PAGO_DETR)              
 Values (          
 @ISCO_EMPR, @ISCO_BANC, @ISNU_CNTA_BANC, @ISAA_BNCO, @ISMM_BNCO, @ISTI_MOVI_BANC, @ISNU_COMP_BANC,           
 @IDFE_OPER, @ISCO_TIPO_OPER, @ISCO_SUBR, @ISCO_TIPO_DOCU, @ISNU_DOCU_BANC, @INFA_TIPO_CAMB, @INFA_CAMB_EXTR, NULL,      
 @ISNU_CHEQ,          
 @INIM_MOVI, @IDFE_CHEQ, @ISCO_ENTR_REND, NULL, NULL, NULL, @ISTI_ENTI, @ISCO_ENTI, @ISDE_NOMB_ORDE,           
 @ISSI_SOLO_BANC, 'N', NULL, NULL, @ISDE_OBSE, 'N', NULL, 'ACT',          
 @ISCO_USUA_MODI, GETDATE(),@ISCO_USUA_MODI, GETDATE(), @ISCO_UNID_CNTB, @ISCO_GRUP_CONC, @ISNU_SOLI, @INNU_CHEQ_USAD,@ISCO_ORDE_SERV,  @VSST_DETR_CALC)             
        
          
 If @@error <> 0          
 Begin          
  Rollback tran          
  Return          
 End          
          
 /** actualiza los saldos en la tabla de meses  **/ -- se comento porque esto mismo lo hace el trigger de la TCMOVI_BANC         
/* UPDATE TMSABA_MENS          
 SET IM_EGRE      = Isnull(IM_EGRE,0) + Round(@INIM_MOVI,2),            
 CO_USUA_MODI = @ISCO_USUA_MODI,     
 FE_USUA_MODI = GETDATE()          
 WHERE CO_EMPR = @ISCO_EMPR            
 AND   CO_BANC = @ISCO_BANC           
 AND NU_CNTA_BANC = @ISNU_CNTA_BANC           
 AND   AA_BNCO = @ISAA_BNCO           
 AND   MM_BNCO = @ISMM_BNCO           
           
 If @@error <> 0          
 Begin          
  rollback tran          
  return          
 End      */      
           
    /* Actualizando Estado y Fecha Liquidaci©n Solicitud Caja */          
              
    Update TMSOLI_CABA Set TI_SITU = 'LIQ', FE_LIQU = @IDFE_OPER,          
          CO_USUA_MODI = @ISCO_USUA_MODI, FE_USUA_MODI = GETDATE()          
    Where  CO_EMPR = @ISCO_EMPR          
    And    NU_SOLI = @ISNU_SOLI          
          
    If @@error <> 0          
       Begin          
         rollback tran          
    return          
       End            
          
   /* ----------- Actualiza los Correlativos ------------------ */          
    If @VSST_INTE_BACH = 'S' OR @ISST_ASTO_RESU = 'S' OR           
 @ISCO_TIPO_OPER = @VSTI_OPNI_CARG OR @ISCO_TIPO_OPER = @VSTI_OPNI_ABON          
      Begin              
          
     If @ISTI_CORR_INEG = 'N'          
           Begin          
       Select @INUL_CORR_EGRE = UL_CORR_EGRE           
         From TMSABA_MENS          
            WHERE CO_EMPR = @ISCO_EMPR            
            AND   CO_BANC = @ISCO_BANC           
         AND   NU_CNTA_BANC = @ISNU_CNTA_BANC           
         AND   AA_BNCO = @ISAA_BNCO           
         AND   MM_BNCO = @ISMM_BNCO           
          
         Update TMSABA_MENS          
         Set  UL_CORR_EGRE = @INUL_CORR_EGRE + 1 + @VNUL_CORR_AJUS, CO_USUA_MODI = @ISCO_USUA_MODI,           
                     FE_USUA_MODI = GETDATE()          
          Where  CO_EMPR = @ISCO_EMPR           
         And    CO_BANC = @ISCO_BANC           
                And    NU_CNTA_BANC = @ISNU_CNTA_BANC           
                And AA_BNCO = @ISAA_BNCO           
                And    MM_BNCO = @ISMM_BNCO          
          
         If @@error <> 0          
                 Begin          
                   Rollback tran          
              Return          
                 End          
    End          
       Else         
           Begin          
           Select @INUL_CORR_INEG = UL_CORR_INEG           
             From TMSABA_MENS          
            WHERE CO_EMPR = @ISCO_EMPR            
         AND   CO_BANC = @ISCO_BANC           
         AND   NU_CNTA_BANC = @ISNU_CNTA_BANC           
         AND   AA_BNCO = @ISAA_BNCO           
         AND   MM_BNCO = @ISMM_BNCO           
          
         Update TMSABA_MENS          
         Set    UL_CORR_INEG = @INUL_CORR_INEG + 1 + @VNUL_CORR_AJUS, CO_USUA_MODI = @ISCO_USUA_MODI,           
                     FE_USUA_MODI = GETDATE()          
          Where  CO_EMPR = @ISCO_EMPR           
          And    CO_BANC = @ISCO_BANC           
         And    NU_CNTA_BANC = @ISNU_CNTA_BANC           
         And    AA_BNCO = @ISAA_BNCO           
         And    MM_BNCO = @ISMM_BNCO          
          
         If @@error <> 0          
                 Begin          
                   Rollback tran          
              Return          
                 End          
   End          
    End          
          
Commit Tran          
          
SELECT @ISNU_COMP_BANC          
RETURN          
          
          
/*------------------------ Fin ------------------------------*/ 

GO
